package com.hourse.platform.service;

import com.hourse.platform.entity.RoleGroupEntity;
import com.hourse.platform.exception.AppException;
import com.hourse.platform.vo.*;

import java.util.List;
import java.util.Map;

public interface RoleService extends PublicService{

  /**
   * @功能描述: 【获取角色数据】
   */
  List<RoleVO> getRoleList();

  Map<String,String> getRoleMap();

  /**
   * @功能描述: 【获取角色菜单】
   */
  List<RoleMenuVO> getRoleMenuList(String roleId);

  /**
   * @功能描述: 【获取角色菜单按钮权限列表】
   */
  List<RoleMenuButtonVO> getRoleMenuButtonList(String roleId, String menuId);

  /**
   * 获取角色权限菜单
   * @param menuId
   * @param roleId
   * @return
   */
  List<MenuVO> getMenuList(String menuId, String roleId);

  /**
   * @功能描述: 【删除角色菜单】
   */
  void deleteRoleMenu(RoleMenuVO roleMenuVO) throws Exception;

  /**
   * @功能描述: 【获取角色菜单按钮权限】
   */
  List<MenuButtonVO> getMenuButtonList(String menuId, String roleId) throws AppException;

  /**
   * @功能描述: 【删除角色权限按钮】
   */
  void deleteRoleMenuButton(RoleMenuButtonVO roleMenuButtonVO) throws Exception;

  /**
   * @功能描述: 【获取系统角色组列表】
   */
  List<RoleVO> getRoleGroupList();

  /**
   * @功能描述: 【获取角色组ITEML】
   */
  List<RoleGroupItemVO> roleGroupItemList(String roleId);

  /**
   * 根据角色标识获取ID
   * @return
   */
  String getRoleIdByCode(String code);

  String getRoleGroupIdByName(String roleGroupId);

  Map<String, RoleGroupEntity> getRoleGroupEntityMap();

  /**
   * 获取对应角色
   * @param userId
   * @return
   */
  List<RoleGroupEntity> getRoles(String userId);
}
